// ----------------------------------
// The Mod: AFTER IMAGES (FREE TO USE, DON'T RELEASE BY ITSELF)
// ----------------------------------

//Player Object Stuff
private alias object.value6 : player.speedShoes
private alias object.value24 : player.groundRotation

//values for after images
private value AfterImages_XDelay = 0;
private value AfterImages_YDelay = 0;
private value AfterImages_RotationDelay = 0;
private value AfterImages_AnimationDelay = 0;
private value AfterImages_DirectionDelay = 0;
private value AfterImages_FrameDelay = 0;
public value AfterImagesCheck = 0;

private alias 3 : AFTERIMAGES_TOTAL
private alias 2 : X_DELAY
private alias 2 : Y_DELAY
private alias 1 : ROTATION_DELAY
private alias 2 : FRAME_DELAY
private alias 2 : DIRECTION_DELAY
private alias 2 : ANIMATION_DELAY

//values gonna get stored in tables
private table AfterImageX
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
end table

private table AfterImageY
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
end table

private table AfterImageRotation
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
end table

private table AfterImageDirection
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
end table

private table AfterImageFrame
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
end table

private table AfterImageAnimation
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0	
end table

event ObjectMain
	//uhh I don't have anything to do here
end event

event ObjectDraw

	//super sonic has his own animation file
	//this is here since Sonic's after images load Super Sonic by default
	if stage.playerListPos == 0
		if PlayerObject_SuperState == 1
			LoadAnimation("SuperSonic.ani")
		else
			LoadAnimation("Sonic.ani")		
		end if
	end if

	//the only times after images should appear

	
		//main delay values
		AfterImages_XDelay = X_DELAY
		AfterImages_YDelay = Y_DELAY
		AfterImages_AnimationDelay = ANIMATION_DELAY
		AfterImages_FrameDelay = FRAME_DELAY
		AfterImages_RotationDelay = ROTATION_DELAY
		AfterImages_DirectionDelay = DIRECTION_DELAY
		
		temp2 = 0 //for the loop
		object.alpha = 200 //main transparency
		
		//here we go
		while temp2 < AFTERIMAGES_TOTAL
			SetTableValue(object[0].xpos, object.value0, AfterImageX)
			temp1 = object.value0
			temp1 -= AfterImages_XDelay
			while temp1 < 0
				temp1 += 100
			loop
			
			GetTableValue(object.xpos, temp1, AfterImageX)		

			SetTableValue(object[0].ypos, object.value0, AfterImageY)
			temp1 = object.value0
			temp1 -= AfterImages_YDelay
			while temp1 < 0
				temp1 += 100
			loop
			
			GetTableValue(object.ypos, temp1, AfterImageY)
			

			SetTableValue(object[0].animation, object.value0, AfterImageAnimation)
			temp1 = object.value0
			temp1 -= AfterImages_AnimationDelay
			while temp1 < 0
				temp1 += 100
			loop
			
			GetTableValue(object.animation, temp1, AfterImageAnimation)
			

			SetTableValue(object[0].frame, object.value0, AfterImageFrame)
			temp1 = object.value0
			temp1 -= AfterImages_FrameDelay
			while temp1 < 0
				temp1 += 100
			loop
			
			GetTableValue(object.frame, temp1, AfterImageFrame)
			

			SetTableValue(object[0].rotation, object.value0, AfterImageRotation)
			temp1 = object.value0
			temp1 -= AfterImages_RotationDelay
			while temp1 < 0
				temp1 += 100
			loop
			
			GetTableValue(object.rotation, temp1, AfterImageRotation)
			

			SetTableValue(object[0].direction, object.value0, AfterImageDirection)
			temp1 = object.value0
			temp1 -= AfterImages_DirectionDelay
			while temp1 < 0
				temp1 += 100
			loop
			
			GetTableValue(object.direction, temp1, AfterImageDirection)
			CheckGreater(player[0].speedShoes, 0)
			temp0 = checkResult
			CheckEqual(PlayerObject_SuperState, 1)
			temp0 |= checkResult
			CheckEqual(AfterImagesCheck, 1)
			temp0 |= checkResult
			if temp0 == 1
				DrawObjectAnimation()
			end if
			
			object.alpha -= 50
			
			AfterImages_XDelay += X_DELAY
			AfterImages_YDelay += Y_DELAY
			AfterImages_AnimationDelay += ANIMATION_DELAY
			AfterImages_FrameDelay += FRAME_DELAY
			AfterImages_RotationDelay += ROTATION_DELAY
			AfterImages_RotationDelay++
			AfterImages_DirectionDelay += DIRECTION_DELAY

			temp2++
		loop

		object.value0++
		object.value0 %= 100		

end event

event ObjectStartup	
	//Load the thing
	object[993].type = TypeName[After Images]
	object[993].priority = PRIORITY_ACTIVE
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
